題目描述為給定兩字串 s,t 要判斷這兩個字串是否為同構。
此題同構的意思是指 s,t 中的全部字元可以被全部互相取代。
題目還有補充說明可假設此題 s,t 長度一樣。
例子 1 : s="egg", t="add"  output=true。
例子 2 : s="foo", t="bar"  output=false。
例子 3 : s="paper", t="title"  output=true。
我們可以建立兩個陣列,將 s,t 中每個字元分別對應到一個非0的數值,當該字元是第一次出現時賦值,第二次出現時檢查兩個陣列中字元是否對應到同一個數值,若不是則返回 false。
參考程式碼
func isIsomorphic(s string, t string) bool {
    
   var arrs,arrt [128]int   
   var bs,bt byte
    
	for i := 0; i < len(s); i++ {
		bs, bt = s[i], t[i]
		if arrs[bs] != arrt[bt] {
			return false
		}
		arrs[bs],arrt[bt]= i+1,i+1
	}
    
	return true
    
}
同構的數學概念為兩者本質一樣,在此題表示兩個字串有一樣的組成結構。我們也可以直接將兩字串字元的數值互相對應,我將此方法做為解法 2,加上簡單的測試,上傳程式碼到此。